home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magnum One
/
Magnum One (Mid-American Digital) (Disc Manufacturing).iso
/
d12
/
asm.arc
/
SUBR.ASM
< prev
next >
Wrap
Assembly Source File
|
1988-11-20
|
1KB
|
43 lines
SUBR PROC FAR
SPACE
; -------------------------------------------------------------------
; ADD BCD NUMBERS
; THIS ROUTINE ADDS TWO BCD NUMBERS OF EQUAL LENGTH
; ASSUMPTIONS:
; CX CONTAINS THE LENGTH OF THE FIELDS BEING ADDED
; SI POINTS TO THE LEFTMOST BYTE OF THE BCD DATA
; DI POINTS TO THE SECOND OPPERAND WHICH IS OVERLAID BY RESULT
; AX DESTROYED BY THIS ROUTINE
;
BCDADD LABEL FAR
CLC ;CLEAR CARY FLAG
BCD1 LABEL NEAR
MOV AL,[SI] ;GET A DATA BYTE
ADC AL,[DI] ;ADD A BYTE
DAA ;ADJUST RESULT
MOV [DI],AL ;STORE ANSWER
INC SI ;BUMP POINTER
INC DI ;BUMP POINTER
DEC CX ;DECREMENT AND TEST
JNZ BCD1 ;LOOP TILL DONE
RET ;BACK TO CALLER
SPACE 2
; ADD ASCII NUMBERS
; LINKAGE IS SAME AS ABOVE
;
ASCADD LABEL FAR
CLC ;CLEAR CARRY FLAG
ASC1 LABEL NEAR
MOV AL,[SI] ;GET A BYTE
ADC AL,[DI] ;ADD DATA
AAA ;ADJUST RESULT
MOV [DI],AL ;STORE ANSWER
INC SI ;BUMP POINTER
INC DI ;BUMP POINTER
DEC CX ;LOOP CONTROL
JNZ ASC1 ;LOOP FOR MORE
RET
;
; -------------------------------------------------------------
SUBR ENDP